Predani retezce mezi procesy
Otázka od: Pavel Poles
24. 6. 2004 11:39
Zdravim konferneci.
Snazim se pouzivat tento kod k vypsani seznamu
tlacitek v pruhu uloh:
var
H: HWND;
i,j: integer;
Buffer : PChar;
S: LPSTR;
begin
H:=FindWindow('Shell_TrayWnd',nil);
H:=FindWindowEx(H,0,'ReBarWindow32',nil);
H:=FindWindowEx(H,0,'MSTaskSwWClass',nil);
H:=FindWindowEx(H,0,'ToolbarWindow32',nil);
i:=SendMessage(H,TB_BUTTONCOUNT,0,0);
a ted:
for i:=0 to i-1 do begin
GetMem(Buffer,SendMessage(H,TB_GETBUTTONTEXT,i,0));
SendMessage(H,TB_GETBUTTONTEXT,i,LongInt(@Buffer));
LB.Items.Add(IntToStr(i)+' - '+string(Buffer));
FreeMem(Buffer);
end;
nebo
for i:=0 to i-1 do begin
S:=PChar(GlobalAlloc(GMEM_FIXED or GMEM_ZEROINIT or GMEM_SHARE
,SendMessage(H,TB_GETBUTTONTEXT,i,0)));
SendMessage(H,TB_GETBUTTONTEXT,i,LongInt(@S));
LB.Items.Add(IntToStr(i)+' - '+string(S));
GlobalFree(S);
end;
Ani jedno z toho nefunguje. Dozvedel jsem se ze je to tim ze tem message
posilam vlastne jinemu procesu, ktery ma jiny pametovy prostor a proto
mu predavam v podstate nesmyslny pointer.
Existuje nejak zpusob jak alokovat pamet pro tento pointer tak aby byl
pouzitelny v tomto pripade?
Nebo existuje nejaky jiny zpusob jak nalezt tlacitko na pruhu uloh, resp.
schovat ho (krome WS_EX_TOOLBARWINDOW nebo SetParent)?
Predm dik za odpovedi
Pavel Poles
Odpovedá: delphin@post.cz
24. 6. 2004 12:28
Na sdileni pameti mezi dvema procesy je treba pouzit pouzit
CreateFileMapping pripadne message WM_COPYDATA.